#ifndef AC_SAMPLER_H
#define AC_SAMPLER_H

#include "sys_pub.h"


// 采样器配置参数
typedef struct {
    uint32_t sample_rate;     // 采样率(Hz)
    uint32_t ac_frequency;    // 交流电频率(Hz)
    uint32_t voltage_ratio;   // 电压互感器变比×100(例：100:1 → 10000)
    uint32_t current_ratio;   // 电流互感器变比×100(例：20:1 → 2000)
    uint32_t bias_mv;         // 偏置电压(mV)
} ACSamplerConfig;

// 采样结果
typedef struct {
    uint32_t voltage_rms_mv;  // 电压有效值(mV×10)
    uint32_t voltage_peak_mv; // 电压峰值(mV×10)
    uint32_t current_rms_ma;  // 电流有效值(mA×100)
    uint32_t current_peak_ma; // 电流峰值(mA×100)
    uint8_t sample_count;     // 采样点数
    bool valid;               // 结果是否有效
} ACSampleResult;

// 初始化采样器
void ac_sampler_init(const ACSamplerConfig* config);

// 重置采样器状态
void ac_sampler_reset();

// 在1ms中断中处理采样数据
void ac_sampler_process_interrupt(uint16_t voltage_adc, uint16_t current_adc);

// 计算采样结果(内部使用)
void ac_sampler_calculate();

// 获取采样结果
bool ac_sampler_get_result(ACSampleResult* result);

// 检查一周期采样是否完成
bool ac_sampler_is_complete();

#endif // AC_SAMPLER_H
